package com.ccc.boot.system.util;


import cn.hutool.core.util.StrUtil;

/**
 * 脱敏工具类
 *
 * @author superC
 * @version 2.0.0
 * @date 2020/12/22
 */

public class DesensitizeUtil {

    /**
     * 姓名 脱敏规则: 只显示第一个汉字
     *
     * @param fullName
     * @return {@link String}
     * @date 2022/4/21 10:14
     * @author superC
     */
    public static String desensitizedName(String fullName) {
        if (StrUtil.isEmpty(fullName)) {
            return null;
        }
        String name = StrUtil.sub(fullName, 0, 1);
        char fillChar = '*';
        return StrUtil.fillAfter(name, fillChar, fullName.length());
    }

    /**
     * 手机号 脱敏规则: 保留前三后四,
     *
     * @param phone
     * @return {@link String}
     * @date 2022/4/21 10:15
     * @author superC
     */
    public static String desensitizedPhone(String phone) {
        if (StrUtil.isEmpty(phone)) {
            return null;
        }
        return phone.replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2");

    }

    /**
     * 身份证号 脱敏规则: 保留前六后三, 适用于15位和18位身份证号
     *
     * @param idNumber
     * @return {@link String}
     * @date 2022/4/21 10:15
     * @author superC
     */
    public static String desensitizedIdNumber(String idNumber) {
        if (StrUtil.isEmpty(idNumber)) {
            return null;
        }
        if (idNumber.length() == 15) {
            idNumber = idNumber.replaceAll("(\\w{6})\\w*(\\w{3})", "$1******$2");
        }
        if (idNumber.length() == 18) {
            idNumber = idNumber.replaceAll("(\\w{6})\\w*(\\w{3})", "$1*********$2");
        }
        return idNumber;
    }

}
